/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package db_interaction;

import javax.persistence.Entity;
import javax.persistence.Table;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;
import javax.persistence.Basic;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.Table;
import org.hibernate.Query;
import org.hibernate.Session;

/**
 *
 * @author Neves
 */
@Entity
@Table(name = "Publicacao_Comentario")
public class Publicacao_Comentario implements Serializable {

    @Id
    @GeneratedValue
    private int Publicacao_Comentario_id;
    @Basic
    @Column(name = "Publicacao_Comentario_Publicacao_id")
    private int Publicacao_Comentario_Publicacao_id;
    @Basic
    @Column(name = "Publicacao_Comentario_Comentario_id")
    private int Publicacao_Comentario_Comentario_id;
    @Basic
    @Column(name = "Publicacao_Comentario_activo")
    private boolean Publicacao_Comentario_activo;

    //GETS
    public int GETID() {
        return this.Publicacao_Comentario_id;
    }

    public int GETPublicacao_Comentario_Publicacao_id() {
        return this.Publicacao_Comentario_Publicacao_id;
    }

    public int GETPublicacao_Comentario_Comentario_id() {
        return this.Publicacao_Comentario_Comentario_id;
    }

    public boolean GETPublicacao_Comentario_activo() {
        return this.Publicacao_Comentario_activo;
    }

    //SETS
    public void SETID(int x) {
        this.Publicacao_Comentario_id = x;
    }

    public void SETPublicacao_Comentario_Publicacao_id(int x) {
        this.Publicacao_Comentario_Publicacao_id = x;
    }

    public void SETPublicacao_Comentario_Comentario_id(int x) {
        this.Publicacao_Comentario_Comentario_id = x;
    }

    public void SETPublicacao_Comentario_activo(boolean x) {
        this.Publicacao_Comentario_activo = x;
    }

    //DB access
    public int insertEntity(Publicacao_Comentario pbc) {
        //returns 1 if successfull
        //return -1 if error
        try {
            Session s = NewHibernateUtil.getSessionFactory();
            s.save(pbc);
            s.getTransaction().commit();
            System.out.println("Inserido");
            return 1;
        } catch (Exception e) {
            return -1;
        }
    }

    public List<Comentario> SelectComentarioPublicacao(int id_publicacao) {

        List<Publicacao_Comentario> pc = null;

        List<Comentario> user_Comentario = new ArrayList<Comentario>();
        Comentario Comentario_temp = new Comentario();


        int id_user_login, id_amigo, id_comentario_pub;
        //returns sellected friend if successfull
        //return null
        try {
            Session s = NewHibernateUtil.getSessionFactory();

            // Pesquisa o ID do user logado
            s.beginTransaction();


            Query q = s.createQuery("from Publicacao_Comentario where Publicacao_Comentario_Publicacao_id = " + id_publicacao);
            pc = q.list();

            s.getTransaction().commit();


            for (int i = 0; i < pc.size(); i++) {
                id_comentario_pub = pc.get(i).GETPublicacao_Comentario_Comentario_id();


                s.beginTransaction();


                Query q2 = s.createQuery("from Comentario where Comentario_id = " + id_comentario_pub);
                Comentario_temp = (Comentario) q2.list().get(0);

                s.getTransaction().commit();

                user_Comentario.add(Comentario_temp);
            }

            return user_Comentario;

        } catch (Exception e) {
            return null;
        }
    }

    public Publicacao_Comentario SelectEntity(Publicacao_Comentario pbc) {
        Publicacao_Comentario pblicom = null;

        //returns sellected friend if successfull
        //return null
        try {
            Session s = NewHibernateUtil.getSessionFactory();
            pblicom = (Publicacao_Comentario) s.load(Publicacao_Comentario.class, pbc.GETPublicacao_Comentario_Comentario_id());
            s.getTransaction().commit();
            return pblicom;

        } catch (Exception e) {
            return pblicom;
        }
    }

    public int UpdateEntity(Publicacao_Comentario pbc) {
        //returns 1 if successfull
        //return -1 if error
        try {
            Session s = NewHibernateUtil.getSessionFactory();
            s.save(pbc);
            s.getTransaction().commit();
            return 1;

        } catch (Exception e) {
            return -1;
        }
    }
}
